package com.fary.core.type;

import com.fary.core.annotation.MergedAnnotations;
import com.fary.util.MultiValueMap;

import java.util.Map;

public interface AnnotatedTypeMetadata {

	MergedAnnotations getAnnotations();

	/**
	 * 此元素是否标注有此注解
	 */
	boolean isAnnotated(String annotationName);

	/**
	 * 取得指定类型注解的所有的属性 - 值（k-v）
	 */
	Map<String, Object> getAnnotationAttributes(String annotationName);

	/**
	 * 取得指定类型注解的所有的属性 - 值（k-v）
	 */
	Map<String, Object> getAnnotationAttributes(String annotationName, boolean classValuesAsString);

	/**
	 * 取得指定类型注解的所有的属性 - 值（k-v）
	 */
	MultiValueMap<String, Object> getAllAnnotationAttributes(String annotationName);

	/**
	 * 取得指定类型注解的所有的属性 - 值（k-v）
	 */
	MultiValueMap<String, Object> getAllAnnotationAttributes(String annotationName, boolean classValuesAsString);

}